A software development process is a structure imposed on the development of a software application/product. There are several known models for the software development process, each describing approaches to a variety of tasks or activities that take place during the process. One model is known as the “waterfall” model. It describes a sequence of tasks (or phases) that may include: stating of requirements, analyzing requirements, designing a solution, architecting a software framework for the solution, developing code, testing, deploying the code, and finally performing a post implementation task such as supporting the code. The different phases substantially differ from each other. Each phase includes tasks that are performed by different roles. Typically, software development tools support specific roles and their relevant tasks and activities in the lifecycle.
Some known software development tools are passive in nature. They check a compliance of a monitored software development phase to a predefined phase scenario—they may indicate that a file must be checked-out before it is edited, that a defect must be opened before a file can be checked-out. These software development task monitors do not actively look for exceptions to the software development phases. They are also limited in their monitoring capabilities to monitoring an occurrence of simple event instances. In addition, software development task monitors do not collaborate and do not support a detection of a complex situation that can be responsive to event instances detected by different software development task monitors.
Other known software development tools focus on only small parts of the overarching problem or tackle larger parts of the problem but are limited to specific development processes and/or technology stacks. For example, standards checking applications check that standards have not been violated within a code that has been produced, but are not aware of the overall design intent. Known design repository applications can generate some of the artifacts needed for the build phase, but are limited to a specific development process and/or technology.